When using the Internet, a client may communicate with a server using different protocols such as the Hypertext Transfer Protocol (HTTP) of the World Wide Web (WWW). This protocol uses Uniform Resource Locators (URL's) to reference files, directories, or complex tasks on the Internet. A complex task may include execution by a web server of a servlet.
An HTTP request may be sent by a client browser to a server over the WWW using the HTTP protocol. Upon receipt of the request, the client will assign it to be processed appropriately by servlets. The servlets perform their complex tasks and return data to the client browser as a Hyper Text Markup Language (HTML) document. Other data formats compatible with the client browser such as Extensible Markup Language (XML) may also be used for the return data. The servlet therefore enhances functionality of web servers. Although primarily used with the HTTP protocol, servlets may also use other technologies.
Servlets are normally written in Java source code, then compiled and installed on a web server that supports servlets such as an Apache HTTP server of the Apache Software Foundation, Forest Hills, Md. or Sun Microsystems' Java Web Server.
Companies which provide web server capability need to monitor the performance such as response time and operational characteristics of their server(s) when running Java or other servlets. For example, current servers may be executing 1.5 million servlets weekly. Such monitoring is necessary to insure acceptable server capability is provided. Otherwise a human user of the web server capability will become dissatisfied and switch to a competitor's capability. Many support tools for monitoring have therefore been developed.
The article “e-business application monitoring tool,” published in Research Disclosure journal of February 2001, page 322 describes checking for server presence using a ping/ping reply test. The article also describes checking for the existence of a process ID (PID) on the server to ensure an application (servlet) is up and running on a server.
The Research Disclosure article also describes a tool for testing application functionality on a server. An application monitoring tool simulates a web client. The tool is run using the timed URL execution capability (CRON) on a Unix platform machine. The monitoring tool sends a URL from a list to the server and tests the server's ability to return a standard HTML page. If the response is bad, or times out after a specified number of re-tries, the event is logged, otherwise the tool proceeds to the next URL on the list. Other responses may also be tested including the server's ability to invoke an Active Server Page (ASP), JAVA SERVER PAGES™ (JSP) (JAVA SERVER PAGES is a trademark of Sun Microsystems, Inc. Santa Clara, Calif.), servlet, or cgi-bin program.
In addition to monitoring, action must be taken when unacceptable performance or operational characteristics are detected. One possible action may be to start additional virtual machines (VMs) running on a server. Bayeh in U.S. Pat. No. 6,223,202 B1 describes a virtual machine pooling technique in which starting or stopping VMs is handled by a controller which monitors execution of the VMs.
Another technique for enhancing performance of computers in a web environment is described by Batra in U.S. Pat. No. 6,105,067. A pool of connections between a web server and backend data servers is created. A process is defined for assigning connections and maintaining connections after processing of a client request is completed. The connections are maintained in the pool. When another client request is received, a connection from the pool is used if one is available. This technique avoids the overhead of re-establishing a new connection.
Fraenkel et al. in Canadian patent application publication 2,255,023 describe monitoring the execution of hybrid source code on a server in order to assist an application developer to detect errors JSP code. A page compiler, while translating JSP code into a servlet includes support for execution tracing by an execution monitor. An application developer can therefore view a correlation between JSP code, servlet code, and the resulting HTML code generated by the servlet.
Despite the aforementioned and other developments in monitoring server performance, there remains a need for a technique to gather information on servlets in order to ascertain performance, perform problem determination, and improve central processing unit CPU utilization on web servers.
In accordance with the present invention, there is defined a new method, system, and program product for improved server performance monitoring. It is believed that such improved monitoring would constitute a significant advancement in the art.